#!/bin/bash
# ==============================================
# 文件类型判断脚本
# 功能：提示用户输入文件名/路径，判断并输出文件类型
# 特性：支持相对路径/绝对路径、空输入处理、文件不存在提示
# ==============================================

# 1. 提示用户输入文件名/路径（友好交互）
read -p "请输入要判断的文件名或路径：" file_path

# 2. 处理空输入（用户直接回车的情况）
if [ -z "$file_path" ]; then
    echo "错误：未输入任何内容！请重新运行脚本并输入有效文件名/路径。"
    exit 1  # 退出脚本，状态码1表示错误
fi

# 3. 检查文件/目录是否存在（避免判断不存在的路径）
if [ ! -e "$file_path" ]; then
    echo "错误：文件/路径 '$file_path' 不存在！请检查输入是否正确。"
    exit 1
fi

# 4. 判断文件类型（核心逻辑）
if [ -f "$file_path" ]; then
    # -f：判断是否为普通文件（如文本文件、可执行文件、图片等）
    echo -e "结果：'$file_path' 是一个普通文件"
elif [ -d "$file_path" ]; then
    # -d：判断是否为目录（文件夹）
    echo -e "结果：'$file_path' 是一个目录"
else
    # 其他文件类型（如符号链接、设备文件、管道文件等）
    echo -e "结果：'$file_path' 是其他类型的文件"
    # 可选：补充显示具体其他类型（增强实用性）
    if [ -L "$file_path" ]; then
        echo "   具体类型：符号链接（软链接）"
    elif [ -b "$file_path" ]; then
        echo "   具体类型：块设备文件（如硬盘、U盘）"
    elif [ -c "$file_path" ]; then
        echo "   具体类型：字符设备文件（如键盘、鼠标）"
    elif [ -p "$file_path" ]; then
        echo "   具体类型：管道文件（FIFO）"
    elif [ -s "$file_path" ]; then
        echo "   具体类型：套接字文件（Socket）"
    fi
fi
